Welcome to the
programmer support pages for
A chunky-graphics library for the Blitz Basic programming language
Written by
Paul West in 1998-2000.
Copyright (c) 1998-2000 Paul Jonathan West
Last updated Thursday 3rd March 2000
Intro: Mildred is a 8-bit-chunky graphics library for the
programming language called BlitzBasic2 on the Amiga computer. It is written
entirely in assembly language and offers a large variety of graphics-related
capabilities which are accessible from your own BlitzBasic2 programs via tokens.
Mildred offers handling of chunky bitmaps and shapes and has its own queue system
to help with many engine's into which it may be applied. It also has a selection
of particle animation and rendering routines, zooms, and a fast chunky-to-planar
conversion system. There are various blitting modes to choose from, individually
selectable for a range of scroll, blockscroll and blit routines, allowing
graphics handling in colour, as well as transparencies and other effects. There
are various housekeeping routines to handle the objects and also a range of
drawing routines for points, lines and boxes, also in various blit modes. Plus
there are a selection of fast tile routines for map-type engines. The
design of the interface between the programmer and the library is based on the
existing design of the original BlitzBasic2 graphics tokens, which makes for an
easier integration and changeover. Perhaps most importantly of all, the output
from Mildred is easily retargetabble between the standard AGA display hardware
and a graphics card (which supports 8-bit modes).
Disclaimer: I make no promises as to the reliability or suitability of
Mildred or any of the example programs, accuracy of documentation or absense of
bugs. I cannot be held liable for any damage that may come about to yourself,
others, nor meterial or intellectual property as a result of exposure to and use
of the library and its supporting information. Use of Mildred is entirely at your
own risk and the author will not be held accountable for any confusions, mishaps,
mistakes, losses or damages. I can also make no promises about the speed or
performance of any of the routines available and you should be aware that working
with chunky-format graphics requires a certain amount of cpu power to be
productive (e.g. 68030/50MHz or higher). Yet I, Paul Jonathan West, would like
to offer at least the warm encouragement that Mildred has undergone extensive
testing both via exposure to the public and as a result of my own checking and
perfecting. So far no bugs have been reported since the release of Mildred v1.50
in May 1999. Please note also that the example/demo programs available below are
there to help you get used to coding using Mildred and will work on most
Amiga's, but in some cases there are problems. This is not necessarily
representative of the reliability of the library itself, but of poorly coded
examples (on my part mostly). I apologise for this and hope that nevertheless
you will have few problems becoming accustomed to using Mildred to open new
avenues in your programming.
Notice: Mildred is designed, written and created by Paul West.
Main development occurred from October 1998 till May 1999 mostly full-time.
The sourcecode, its copyright and freedom to make alterations, modifications
and additions has been reclaimed from Pagan Games, as well as full rights
of distribution as I see fit.
This has no effect on public use of the compiled library in any of your
projects, such as can be downloaded in the archives below. There is no further
work planned by the author at this time, but further work is now a possibility.
All of the files and information available below for download are free for public
use and the author will willingly accept payments for use of Mildred in
your products if you are feeling generous! Please enjoy this great library and
good luck with your projects.
Mildred Stats:
863,325 bytes of assembler code spanning 27,176 lines, 219 individual tokens with
the functionality of 407 via syntax variations, sourcecode commented on 12,440
lines, full runtime errorchecking routines throughout, 51 version updates
comprising bugfixes, additional code and optimisations since the first public
release, full AmigaGuide and Html documentation covering every token and
variation of syntax, 4 months full time and 3 months part time work, compiles
to 138,104 bytes in 115 seconds on my 68040/25.
Click HERE for library history,
or HERE for a list of commands.
(65k) Mildred.lha :
This is the actual Mildred library, version 1.51.
(47k) MildredGuide.lha :
This is an archive containing full documentation covering ALL commands in
Mildred for version 1.51, in AmigaGuide format. Alternatively you can
click HERE to view the text on-line.
(124k) MildredHtml.lha :
Html version of the MildredGuide.lha amigaguide v1.51 documentation. Alternatively,
you can click HERE to read the
Html documentation online.
(2k) Internal.lha :
This is a copy of the internal data area of Mildred v1.47. This may be needed if
you are writing your own libraries and wish to tap in to Mildred's data area
(which can also be achieved using MMildredBase). Alternatively you can click
HERE to view it online.
(16k) MiniMildred.lha :
This is the abridged MiniMildred library, version 1.19, the chunky-to-planar
subsystem of the main Mildred system. (Bugfixed)
(36k) OldHtml.lha :
This is an archive containing the OLD on-line html documenation for Mildred that
covered all of the chunky-to-planar-related commands. There are no pictures included.
Notice: You can now download the sourcecode to Mildred. It is free of
charges and obligations. I, Paul Jonathan West, retain copyright ownership of the
library as it stands and is presented at this website, but you may freely
alter, distribute, modify, enhance, optimise, reform and use the source in any
way you see fit in any of your projects, experiments and products. I do not
expect a fee for this privelege but would welcome any small donations and can
be contacted by email.
(105k) MildredSourceAsc.lha :
Full sourcecode to the Mildred library v1.51, saved in ASCII format, or click
HERE to read the source online.
(105k) MildredSourceBB2.lha :
Full sourcecode to the Mildred library v1.51, saved in BlitzBasic2 format.
(6k) MildredTests.lha :
A few small test programs that I used at times to check if various tokens were
working as they should.
(10k) MiniMildredSourceAsc.lha :
Full sourcecode to the MiniMildred library, saved in ASCII format.
(10k) MiniMildredSourceBB2.lha :
Full sourcecode to the MiniMildred library, saved in BlitzBasic2 format.
Notice: To follow are various archives of demo programs and related
material that may help you in your exploration of using Mildred in your own
software. Not all of it works at it should for everyone all the time but I hope
it will offer you some useful introduction to various aspects of programming
with Mildred.
(165k) DissolveDemo.lha :
This is a demonstration of how to use MPictureDissolveIn. Two example effects are
included but the possible effects are limited only by your imagination. Updated
to work with v1.44.
(19k) ILBMviewer.lha :
This is a demonstration mainly of the c2p system and its interlacing features. It
allows you to load in an ILBM picture and to display it in the form of a
superbitmap. This also includes some old code for an ILBM-to-Chunky loader, and a
screenmode-requester routine with a callback hook. Updated to work with v1.45.
(3k) MildredStructs.txt :
Here are the structures for Mildred's objects. This is not an archive.
(9k) BounceDemo.lha :
This is a demo for bouncing objects around the screen. It uses MQSBlit to put
objects behind the bitmap's stencil and into the queue and also performs an
unqueue from a store-bitmap. Updated to work with v1.43.
(15k) FDsExample1.lha :
This is an example program demonstrating the use of Mildred to produce a cool sinewave effect
on a logo, written by Mikkel Lokke.
(15k) MScreen.lha :
An example of how to open a screen that can be retargetted to graphics-card or
to AGA, in a way that works easily with Mildred and allows the use of
MBlockScroll for fast graphics-card output in 8-bit chunky. Updated for v1.45.
(3k) FDsExample2.lha :
Another example by Mikkel Lokke, demonstrating how to safely cludge a shape
onto previously created shape data.
(23k) CardTest.lha :
This is a couple of programs (Comparison and ILBMviewer2) that I was fiddling
with when experimenting with graphics-card output. Comparison does a speed-test
between using WritePixelArray8 and MBlockScroll for output, and ILBMviewer2 is
a reworking of the old ILBMviewer program but with different graphics-card output
(using MBlockScroll). The comparison program is also a combination of ILBMviewer
and the Bounce demo. Updated to work with v1.45.
(258k) Remap.lha :
This is a demonstration of the MReMapUsingShape command in combination with a
remapping table. Three precalculated tables are included for 50% merge, add,
and subtract or alternatively you can compute your own (see sourcecode). Note
that a generated table only works for the palette it was computed with. This
demo also has Mildred-based AGA and GFX-card support. You will need Mildred
v1.42 for this demo to work free of bugs, although it will work with earlier
versions. Now updated for v1.43 and using MQblit with MReMapMode instead of
MReMapUsingShape (which has been deleted from the library). Updated for v1.45.
(5k) GFXlib.lha :
This is an updated version of the blitzlibs:amigalibs/graphics.library files for
o/s 3.1, which provides the new function WriteChunkyPixels_() which can be
useful for graphics-card output. Note that the more recent Mildred demo's are
written using this library so if you get tokenisation problems there (ie the
wrong tokens come up) then you might like to try this update (or try loading in
the ascii sourcecode), although it will only be fully accessible if you have o/s 3.1.
(155k) Bounce9.lha :
This is a quick new demo of the `remap mode' blits that were introduced in
Mildred v1.27. Two tables have been precalculated showing 50% and 20% merge.
The sourcecode contains the necessary routines to generate further different
tables (it takes a while!) Now updated for v1.45.
(73k) FDsExample3.lha :
Welcome to a superbitmap scroll demo by, another fine effort by Flame Duck
himself, Mikkel Lokke. This demonstrates how you can scroll around a superbitmap.
Updated for v1.43.
(3k) FDsExample4.lha :
A nice little exploding firework effect using Mildred, by Mikkel Lokke. Updated
for v1.43.
(213k) ScrollDemo.lha :
This is a demonstration of various types of `scroll' commands in Mildred. The
featured effect from top-left are scroll, blockscroll, motionblur using 50%
merge, blacksmoke using subtract, stencil in colour, scroll from same bitmap, 50%
transparency, scroll behind stencil including x and y flips, scroll from same
bitmap and y-flipped copy of the 50% merge. See the effects for yourself. The
two necessary remap tables are included, along with the iff pic that is needed
(the tables are calculated based on its palette). Updated for v1.45.
(3k) PixelExplosion.lha :
This is a modification of Mikkel's pixel explosion program (FDsExample4.lha)
with much improved speed and performance. There are 15000 pixels exploding! The
enhancement has been done by Sami Naatanen, with thanks to Flame Duck for the
original program. Updated for v1.43.
(47k) MScreen2.lha :
This is an better example of how to do RTG in your Mildred programs. You will
need o/s v3.1 graphics.library (see above) in order to load the source properly,
but ascii is included (as is exe). You will need to put cybergfx.res into
blitzlibs: (included). The demo will make use of cybergraphics library if you
have it (or picasso96), and offers a selection of output methods (selectable with
variables). A simple bouncing line routine is done to show that the output works.
The demo defaults to custom Mildred output and triple buffering. See below for
the cybergraphics.library1 file if you haven't already installed one yourself.
Updated for v1.45.
(3k) PixelExplosion2.lha :
This is a further modification by myself to the pixel explosion routine that
Mikkel originally wrote, which was later modified by Sami. I have converted the
program to use the new particle animation routines, and is now at least
twice as fast, or many times faster on lower cpu's. Now updated for v1.43.
(10k) GravityExample.lha :
A fun little demo of a Gravity-Force style game written by Sami Nataanen. This
shows some simple use of some particle animation routines and output from a
superbitmap, as well as a nifty little gravity effect, thrust, and bullets.
Updated for v1.43.
(2k) CyberGFX.lha :
This is the cybergraphics.library1 library file which you can/should put into
your blitzlibs:amigalibs/ directory (and remake your deflibs) to provide the
standard set of tokens for the cybergraphics library. Also included is a .res
file which you should put into blitzlibs:, converted by Daniel Allsopp.
(73k) DispDemo.lha :
A superbitmap scroll demo by Andreas Hkansson, similar to FDExample3, but showing
you how to simply implement a split-screen display such as for a two-player game.
Updated for v1.43.
(7k) HStarDemo.lha :
Here is a nice little horizontal starfield with a bendy logo effect, written
mostly by Bruce Henderson.
(7k) Starfield2.lha :
This is a modification of HStarDemo.lha demonstrating how to use MScroll with a
custom-offsets list so that the bendy logo effect can be achieved with only one
call to MScroll rather than seperate calls for each line. The sinewave had to
be put into a lookup table for this purpose, so overall the effect is faster
(without the WaitTOF).
(20k) SineExample.lha :
Here are two demos of using a custom-offsets list to produce the sinewave logo
effect as originally written by Mikkel Lokke. Rather than blit each line
seperately the lookup table is used to offset each line as the scroll progresses.
The overall result is a much smoother effect. Also a second demo is included
which attemps to do a quick verticle sinewave simultaneously (although using a
seperate call for each column) so produce a liquid sort of effect.
(84k) ZoomDemo.lha :
Here are two demos featuring examples of the new zoom routines as introduced in
Midred v1.47. The first is a simple zoom of an image and the second shows how
to use a custom-offsets list to modify the zoom effect on each line (with which
much fun can be had!). Updated for v1.48.
(84k) DeResDemo.lha :
Here are two demos featuring examples of the new de-res effect that has been
added to the zoom routines in Mildred v1.48. The first is a simple de-res of an
image and the second shows how to use the custom-offsets list to modify the
de-res effect on each line.
(34k) CNKI.lha :
Here is a proposed file format for storing chunky shapes (which could also be
applied to chunky bitmaps), designed by Chris Deeney. It is able to store single
shapes or `anim shapes', and a converter program is included to convert IFF brush
and IFF animbrush files into CNKI files. Also supplied are some blitz routines to
handle the CNKI files including LoadCNK{} for loading in the CNKI files to your
program. The CNKI files can also have some compression.
(417k) SplitTests.lha :
Four examples of doing splitscreens using Mildred. These examples are released
`as is' and haven't really been coded for an audience, but you may find them an
interesting example of various kinds of split-screens possible using Mildred.
The examples use a superbitmap source with multiple views on it, including 4-way
split, diagonal split and a single view with zoom (use mouse buttons). These
programs were simple experiments in splitscreen methods and how many objects
could be rendered/handled at the same time.
(309k) SlideShow.lha :
This is part of a programmed slideshow-type demo which I began work on. It shows
an example of using MZoom as well as two examples of picture dissolving. Again
this sourcecode wasn't intended to have an audience but you may find it
interesting. It was targetted at an 040/25 so will run slow on anything less.
(42k) LandTest1.lha :
(50k) LandTest2.lha :
(98k) LandTest3.lha :
(86k) LandTest4.lha :
(101k) LandTest5.lha :
(279k) LandTest6.lha :
(163k) LandTest7.lha :
LandTest is the beginnings of a game engine, intened to be a cross between
Defender and Revenge of the mutant camels. It starts off in LandTest1.lha as my
first experiments with a parallax ground using Mildred. In LandTest3.lha things
have got much more sophisicated and by LandTest6.lha and LandTest7.lha most of
the main features are in place - for as far I'd got with it. Archive 6 has a
selection of alternative executables, and archive 7 also has an executable. Note
that Mildred is used for all of the graphics rendering and that the screen
comprises a full graphical backdrop (128 shared colours) and 256-colour objects
(using 128 colours probably). The sky was due to eventually get several parallax
layers as well. Control is via the joystick. In some of the
versions, deacceleration is switched off. This was due only to my standing back
for hours on end admiring my handywork in motion! These files, at least, show a
good example using a scroll with a custom offsets table to produce a parallax
ground effect in a single blit. Also some particle routines are used for
animation, and realtime zoomed bobs for the background map. Note that earlier
archives output to AGA only, and none of these files were intended for an
audience. If there is any project that I might continue with someday it could be
this one. LandTest was designed to run at 25fps on an 040/25 and makes strong use
of 040 optimisations.
(160k) LandMap.lha :
LandMap accompanies the LandTest programs above. It is used to convert an
ordinary strip of `land' graphic into a fake perspective, ready to be used for
the parallax ground image in the LandTest examples. The operation of the parallax
in the LandTest programs is dependent upon the output from this program. Some
degree of palette remapping may also be involved as, in later versions, sky and
land images shared the same 128 colour palette. Note that these programs also
were not designed with an audience in mind.
(40k) RotateTest.lha :
This is a little experiment I did in rotating a bitmap realtime. There are two
versions, the latter being slightly faster due to using Mildred's particle
drawing routines instead of individual plots. You can use the mouse buttons to
zoom in and out because it zooms at the same time as rotating. This was really my
first exploration into rotation and I would've liked to have offered various
blits with rotation incorporated, but on trying experimenting with the idea in
assembler I found there was a major shortage of registers spare and therefore
any implementation would be less than optimum speed, especially in different blit
modes (and it would require the infamouse DIVU command which is very slow). This
routine outputs to AGA only and the source is not designed for an audience.
(34k) PixelExplosion4.lha :
This is a revision of the previous Pixel Explosion examples, simply to test using
the particle routines in `add' mode. The resulting effect is that the explosion
starts off `bright' when the particles are condensed and `cools' as they
disperse.
(121k) SnowDemo.lha :
This is a demo of how you might do a snow effect using particles in Mildred. The
particles simply have random positions, a base movement direction is added to
them, and then a random variation direction is added to them. When they go off
the end of the buffer they're wrapped back to the top. Note that this example
wasn't designed for an audience, but enjoy.
(114k) RainDemo.lha :
This is similar to the SnowDemo above, except that in this example the particles
are clumped together and moved together in unisons of 4 to create the impression
of a streak of rain rather than individual pixels. Also the movement variance is
adjusted to give a less snow-blowy effect. Note that this example wasn't designed
for an audience either, but enjoy.
The team of Pagan Games were
using Mildred in Dafel:Bloodline.
This project was the womb from which Mildred sprang.
Mildred is also being used in
Operation:CounterStrike from
BlueBlack Solution by Daniel
Allsopp.
Rui "Grim" Calvalho of Dark Dreams Designs
is using Mildred in his new Bubbles game.
Paul Burkey is using MiniMildred in
Foundation.
Visitors:
A Member of the Blitz WebRing